Amazon Personalizeの推論フィルターを使って年齢制限のある商品やコンテンツをユーザーの年齢に応じてフィルターする
データアナリティクス事業本部の貞松です。
今回はAmazon Personalizeの推論フィルターについて、より実務的なユースケースをご紹介します。少しでも実務で活用するためのイメージを持っていただけると幸いです。
推論フィルターとは
Amazon Personalizeで使用可能な推論フィルターとは、「フィルター式」と呼ばれる条件式を用いて、Personalizeのソリューション(レコメンドモデル)から生成されるレコメンドアイテムをフィルターする機能です。
InteractionデータセットのEVENT_TYPEやItemsやUsersデータセットに含まれるメタデータを条件として、レコメンドアイテムに含める、あるいは除外するアイテムを設定できます。
フィルター式の詳細については下記の公式ドキュメントを参照してください。
ユースケース
一般的に、映画や書籍、ゲームなどのコンテンツに対して、審査期間によるレーティング(年齢制限)が定められています。
全年齢対象以外の様々なレーティングが設定されたコンテンツをまとめて扱うようなWebサービスやECサイトにおいては、対象ユーザーごとに表示するコンテンツを厳密に制御する必要があります。
今回は全年齢対象(G)と18歳以上対象(R18+)のレーティングをもつ映画のコンテンツを想定して、18歳未満のユーザーにはR18+のコンテンツをレコメンドしないように推論フィルターを作成、適用します。
使用するデータセット
使用するデータセットのスキーマは以下の通りです。
UsersにAGE(ユーザーの年齢)、ItemsにRATING(年齢制限区分)が含まれています。
- Interactions
- USER_ID
- ITEM_ID
- TIMESTAMP
- Users
- USER_ID
- AGE
- Items
- ITEM_ID
- RATING
各データセットにインポートするデータは以下のようなデータとなっています。
データセットグループの作成〜ソリューションバージョンの作成まで
データセットグループの作成、データセットの作成とデータインポート、ソリューションの作成(モデルの学習)までの処理については従来と変わらない為、本記事では省略します。
これらの操作については下記の記事などをご参照ください。
推論フィルターの作成
推論フィルターを作成します。
GUIによるフィルター式ビルダーを使用、もしくはフィルター式を手書きすることでフィルターを作成できます。
今回はフィルター式ビルダーを使って、ユーザーの年齢が18歳未満の場合にRATINGがR18+のアイテムを除外するようにフィルター式を組み立てます。
作成されたフィルターの詳細画面は以下のような画面になります。
フィルター式ビルダーで組み立てた内容がフィルター式に変換されていることが確認できます。
フィルターの動作確認
作成したフィルターの動作を確認するためにキャンペーン(リアルタイムレコメンデーションのエンドポイント)を作成して、フィルターの有無による生成されるレコメンドアイテムの変化を確認します。
まず18歳未満のユーザーに対してレコメンデーションを実行してみます。
USER_ID=6のユーザーが17歳なので、このユーザーを対象としたレコメンドアイテムを生成します。
まずはフィルター未適用の場合のレコメンドアイテムを確認します。
ITEM_ID=593など、RATINGがR18+のアイテムが含まれています。
次に前述で作成した年齢制限のフィルターを適用してレコメンドアイテムを生成します。
ITEM_ID=300など、RATINGがGのアイテムのみがレコメンドされており、R18+のアイテムが除外されていることが確認できます。
次に18歳以上のユーザーに対してレコメンデーションを実行します。
USER_ID=24のユーザーが18歳なので、このユーザーを対象としたレコメンドアイテムを生成します。
フィルター未適用の場合と年齢制限のフィルターを適用した場合でレコメンドアイテムに変化がないことを確認できます。
まとめ
Amazon Personalizeの推論フィルターについて、より実務での活用をイメージしやすいユースケースと対応手順をご紹介しました。
クラスメソッドでは、先日「機械学習を活用したレコメンドシステムプラン」を公開しており、Amazon Personalizeを軸としたレコメンドシステムの構築についてもご支援させていただいておりますので、本記事のような要件を満たしつつレコメンドを作成する仕組みが欲しいなどありましたら、是非ご相談いただけると幸いです。